iT邦幫忙

2024 iThome 鐵人賽

DAY 3
0
Mobile Development

自己的 app 自己寫系列 第 3

[Day3] 學會寫 button 是不是離完成夢想前進了一大步

  • 分享至 

  • xImage
  •  

老樣子繼續跟著 SwiftUI tutotial 的 文檔 走,今天的內容主要是學習怎麼處理最基礎的 user action,昨天只是加上 navigation link 實現不同 view 之間的切換,今天則是加上了 toggle,讓頁面可以隨著使用者的選擇去做切換。

這三天讀文檔的感覺蠻好的,不過文檔中其實省略了不少 swift 背後運作的邏輯,有些地方也沒有過多解釋。感覺還是要找時間認真一點研究 swift,並且把背後邏輯都好好搞懂。

之後也許會抽個幾天來讀 Stanford CS193p,很久以前看過一點當時大受震撼,如果大家想要好好打 ios 基礎的強烈建議從頭刷完。

https://ithelp.ithome.com.tw/upload/images/20240917/20169412290mUmXG8C.jpg

中秋節可以廢一點不要學新知識點了嗎QQ (以下一樣 based on ChatGPT 老師)

  • wrapper:用來封裝變量的邏輯&行為
    • @State:定義狀態變數。如果 user 和 view 進行交互後有狀態的更新,SwiftUI 會自動重新渲染 view。可以接受 user input 的元件有 TextField, Button, Toggle 等等
    • @Binding:在 parent view & child view 之間共享 data 的 wrapper,可以讓兩者的狀態保持一致
    • @Published:標記 attribuge,當屬性改變時,發布通知給所有 observer,經常和 @ObservedObject 一起使用
      • ObservedObject 裡面可能只有其中某幾個屬性有標示 publish,只有在被標示的屬性變動時才觸發變化
    • @Observable:用來標示 class,Swift 會自動生出監聽變化的 code,當屬性改變時,相關的 UI 或 observer 會收到通知,可以直接實現渲染的更新
    • @Environment:從當前的環境中獲取某個 object,可以直接將某些值注入到 view 裡面。通常會在 parent view 用 @StateObject 創建共享對象,然後在 child view 裡面使用
    • @AppStorage:做持久化儲存
  • view 之間的切換 -> 用 NavigationView & NavigationLink 來實現

上一篇
[Day2] hello world 之後難度怎麼直線爆炸了
下一篇
[Day4] 十點多開始寫鐵人要寫到幾點才能完成
系列文
自己的 app 自己寫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言